"""
注意类属性、类方法 和 实例属性和实例方法的区别
类属性：被类的所有对象所《共享》
"""


class Student:
    # 类的属性
    school = '武汉大学'

    # 初始方法
    def __init__(self, name, age):
        # 左侧实例属性，右侧局部变量
        self._name = name
        self._age = age

    # 实例方法，可以调用实例属性
    def show(self):
        return f'{self._name}今年{self._age}岁了'

    # 类方法
    @classmethod
    def cm(cls):
        print('这是一个类方法，不能调用实例属性和实例方法')

    # 类静态方法
    @staticmethod
    def sm():
        print('这是一个类静态方法，不能调用实例属性和实例方法')

    # 获取名字
    @property
    def get_name(self):
        return self._name

    @property
    def get_age(self):
        return self._age


# 类组成部分的使用
stu = Student('张三', 20)
# 使用类属性
print('school = ', Student.school)
# 使用实例属性
print(f'{stu._name}, {stu._age}')
# 使用实例方法
print(stu.get_name, stu.get_age)
print(stu.show())

# 调用类方法
Student.cm()
# 调用静态方法
Student.sm()
